/*************************************************************************
	> File Name: 001.用scanf读入包含空格的字符串.c
	> Author: Maureen 
	> Mail: Maureen@qq.com 
	> Created Time: 三  8/18 18:29:30 2021
 ************************************************************************/

#include <stdio.h>

//scanf函数用分隔符（空格、换行符）来结束参数读入
int main() {
    char str[100];
    while (scanf("%[^\n]s", str) != EOF) {
        getchar();  //必须加
        printf("%s\n", str);
    }
    return 0;
}
//[分析]不加getchar()会出现的问题: 无限循环打印输入的字符串。
//[原因]
//scanf是流式读入，流先加载到缓冲区，scanf从缓冲区中读取
//[^\n]表示读取除了\n的字符，所以scanf遇到\n时结束读取，\n还在缓冲区中
//下一次读取时，碰到的都是\n，scanf函数的返回值为0，于是无限循环。
//getchar()会强制吞掉缓冲区中的\n
